#ifndef TESTAPP_H
#define TESTAPP_H

#include <QMainWindow>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QProcess>
#include <QLocalSocket>
#include <QJsonDocument>
#include <QJsonObject>
#include <QMessageBox>

class TestApp : public QMainWindow
{
    Q_OBJECT

public:
    TestApp(QWidget *parent = nullptr);
    ~TestApp();

private slots:
    // 启动智林白板投屏应用
    void onStartAppClicked();
    
    // 开始投屏
    void onStartCastClicked();
    
    // 停止投屏
    void onStopCastClicked();
    
    // 关闭应用
    void onQuitAppClicked();
    
    // 处理进程结束
    void onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
    
    // 处理进程错误
    void onProcessError(QProcess::ProcessError error);

private:
    // 发送命令到智林白板投屏应用
    bool sendCommand(const QJsonObject &command);
    
    // UI组件
    QWidget *m_centralWidget;
    QVBoxLayout *m_mainLayout;
    
    QLabel *m_screenNameLabel;
    QLineEdit *m_screenNameEdit;
    
    QPushButton *m_startAppButton;
    QPushButton *m_startCastButton;
    QPushButton *m_stopCastButton;
    QPushButton *m_quitAppButton;
    
    // 进程控制
    QProcess *m_process;
    
    // 套接字连接
    QLocalSocket *m_socket;
    
    // 应用路径
    QString m_appPath;
};

#endif // TESTAPP_H
